<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <script>
        /**
         * 可能会有小友觉得这题很简单，别急，是很简单但可以优化，
         * 我们的目的是用更少的代码写更清晰且健壮的程序
         * 首先先分析一下这个题，我们需要取到最后一个.及后面的字符串,
         * 想想我们需要处理的极端情况：
         * 1. 输入为空字符串 -需返回空字符串
         * 2. 输入为. -需返回空字符串
         * 3. 输入为.txt -需返回.txt
         * 4. 输入为index.kk.js -需返回.js
         * 
         * 条件这么多自然是正则匹配最方便了，下面我们来解析一下这个正则表达式
         * ()捕获，捕获内容的下标是从1开始，这里其实也可以不需要捕获，就当温习知识点了
         * \.表示匹配.，.是特殊字符，需要转义
         * [^.]表示匹配除了.之外的字符，+表示匹配一次或多次，为什么需用+,这是为了满足第二种情况，.后面肯定需要接内容的
         * $表示匹配字符串的结尾，这里可以解决第四种情况，我们需要的末尾符合条件的内容
         * 
         * 万一啥也没匹配到，[1]必定报错的,难不成我们要将filename.match(regex)拿出来单独判断一下吗？
         * 这里我们可以使用?.（可选链操作符）来判断，当filename.match(regex)为undefined时，filename.match(regex)?.[1]是undefined而不是报错，
         * 当然这里提醒一下，牛客的判题环境不支持可选链操作符，别问问就是wa过了，但它的测例也就一个罢了，去掉.?随便过
         * 最后我们再加上个||不就完美解决了匹配不到的情况嘛，完美，撒花~
         */
      const _getExFilename = (filename) => {
          // 补全代码
          const regex = /(\.[^.]+)$/;
          return filename.match(regex)?.[1]||'';
      }

      console.log(_getExFilename("index.html"));
      console.log(_getExFilename(".txt"));
      console.log(_getExFilename("index.kk.js"));

      //下面两个因为返回的是空字符串，所以加了个图标作为提示
      console.log("🫧"+_getExFilename("."));
      console.log("🎈"+_getExFilename(""));
    </script>
  </body>
</html>
